package com.example.demo;


import android.annotation.SuppressLint;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothSocket;
import android.util.Log;

import java.lang.reflect.Method;
import java.util.ArrayList;

/**
 * 蓝牙适配器
 */
public class BlueToothController {

    private BluetoothAdapter mAdapter;
    private String TAG = "BlueToothController"; // 初始化TAG字段
    public static final int RECV_VIEW = 0;
    public static final int NOTICE_VIEW = 1;

    /**
     * 构造函数
     */
    public BlueToothController(){
        // 获取本地的蓝牙适配器
        mAdapter = BluetoothAdapter.getDefaultAdapter();
    }



    /**
     * 查找设备
     *
     * 此方法用于启动蓝牙设备发现过程如果当前蓝牙适配器正在发现设备，则取消当前的发现过程并返回false
     * 如果当前没有进行设备发现，则启动设备发现过程并返回true注意，此方法忽略了权限检查，
     * 使用者需要确保在调用此方法前已经获得了必要的蓝牙权限
     *
     * @return boolean 表示设备发现过程是否已启动返回true表示已启动，返回false表示未启动，可能因为已经在发现过程中或取消了发现过程
     */
    @SuppressLint("MissingPermission")
    public boolean findDevice(){
        assert(mAdapter!=null);
        if(mAdapter.isDiscovering()){
            mAdapter.cancelDiscovery();
            return false;
        }else {
            return mAdapter.startDiscovery();
        }
    }


    /**
     * 获取绑定设备
     * @return
     */

    @SuppressLint("MissingPermission")
    public ArrayList<BluetoothDevice> getBondedDeviceList(){
        return new ArrayList<>(mAdapter.getBondedDevices());
    }

    /**
     * 根据蓝牙地址找到相应的设备
     * @param addr
     * @return
     */
    public BluetoothDevice find_device(String addr){
        return mAdapter.getRemoteDevice(addr);
    }

    /**
     * 取消搜索操作
     * 此方法用于停止当前正在进行的设备搜索操作
     * 注意：此方法忽略了权限检查，调用前请确保应用已获得必要的权限
     */
    @SuppressLint("MissingPermission")
    public void cancelSearch() {
        mAdapter.cancelDiscovery();

    }

}
